home *** CD-ROM | disk | FTP | other *** search
- // Copyright 2002 Macromedia, Inc. All rights reserved.
-
- // *************** GLOBALS VARS *****************
-
- // ***************** LOCAL FUNCTIONS ******************
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // encodeDynamicExpression
- //
- // DESCRIPTION:
- // This function prepares a dynamic expression for insertion onto
- // the page. It is assumed that this expression will be used
- // within a larger dynamic statement, therefore all server markup
- // is stripped.
- //
- // ARGUMENTS:
- // expression - string - the dyanmic expression to encode
- //
- // RETURNS:
- // string
- //--------------------------------------------------------------------
-
- function encodeDynamicExpression(expression)
- {
- var retVal = "";
- expression = expression.toString();
-
- if (hasServerMarkup(expression))
- {
- retVal = trimServerMarkup(expression);
- }
- else
- {
- var parameters = expression.match(/(true|false|[-]?\d+[\.]?\d*)/i);
- if (parameters && parameters[0].length == expression.length) // matches, return exact
- {
- retVal = expression;
- }
- else
- {
- if (!dwscripts.isQuoted(expression))
- {
- retVal = "\"" + dwscripts.escQuotes(expression) + "\"";
- }
- else
- {
- retVal = expression;
- }
- }
- }
-
- return retVal;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // decodeDynamicExpression
- //
- // DESCRIPTION:
- // This function prepares a dynamic expression for display within
- // a dialog box. Quotes are removed,a nd server markup is re-added.
- //
- // ARGUMENTS:
- // expression - string - the dynamic expression to prepare for display
- //
- // RETURNS:
- // string
- //--------------------------------------------------------------------
-
- function decodeDynamicExpression(expression)
- {
- var retVal = "";
-
- expression = dwscripts.trim(expression.toString());
- var unquoted = dwscripts.trimQuotes(expression);
-
- var parameters = unquoted.match(/(true|false|[-]?\d+[\.]?\d*)/i);
- if (parameters && parameters[0].length == unquoted.length) // matches, return exact
- {
- retVal = expression;
- }
- else
- {
- if (dwscripts.isQuoted(expression))
- {
- retVal = dwscripts.unescQuotes(unquoted);
- }
- else if (!( expression.charAt(0) == "#"
- && expression.charAt(expression.length-1) == "#"
- )
- )
- {
- retVal = "#" + expression +"#"; // no need to add cfoutput tags
- }
- else
- {
- retVal = expression;
- }
- }
-
- return retVal;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // hasServerMarkup
- //
- // DESCRIPTION:
- // This function returns true if the given expression contains
- // server markup.
- //
- // ARGUMENTS:
- // expression - string - the expression to test for server markup
- //
- // RETURNS:
- // boolean
- //--------------------------------------------------------------------
-
- function hasServerMarkup(expression)
- {
- var retVal = false;
-
- expression = expression.toString();
-
- var exp1 = /<cfoutput[^>]*>/gi;
- var exp2 = /<\/cfoutput>/gi;
- if ((expression.search(exp1) != -1 && expression.search(exp2) != -1))
- {
- retVal = true;
- }
-
- if (!retVal)
- {
- // search for the starting and closing pound signs
- // need to handle pound signs escaped with double pounds
-
- var beginindex = expression.indexOf("#");
- while (beginindex != -1)
- {
- if (beginindex+1 >= expression.length || expression.charAt(beginindex+1) != "#")
- {
- break;
- }
- beginindex = expression.indexOf("#", beginindex+2);
- }
- if (beginindex != -1)
- {
- var endindex = expression.indexOf("#", beginindex+1);
- while (endindex != -1)
- {
- if (endindex+1 >= expression.length || expression.charAt(endindex+1) != "#")
- {
- break;
- }
- endindex = expression.indexOf("#", endindex+2);
- }
-
- if (beginindex != -1 && endindex != -1)
- {
- retVal = true;
- }
- }
- }
-
- return retVal;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // trimServerMarkup
- //
- // DESCRIPTION:
- // This function returns the given expression with any server markup
- // removed.
- //
- // ARGUMENTS:
- // expression - string - the expression to remove server markup from
- //
- // RETURNS:
- // string
- //--------------------------------------------------------------------
-
- function trimServerMarkup(expression)
- {
- var retVal = expression.toString();
-
- var exp1 = /<cfoutput[^>]*>/gi;
- var exp2 = /<\/cfoutput[^>]*>/gi;
-
- retVal = retVal.replace(exp1,"");
- retVal = retVal.replace(exp2,"");
-
- // search for the starting and closing pound signs
- // need to handle pound signs escaped with double pounds
-
- var beginindex = retVal.indexOf("#");
- while (beginindex != -1)
- {
- if (beginindex+1 >= retVal.length || retVal.charAt(beginindex+1) != "#")
- {
- break;
- }
- beginindex = retVal.indexOf("#", beginindex+2);
- }
- if (beginindex != -1)
- {
- var endindex = retVal.indexOf("#", beginindex+1);
- while (endindex != -1)
- {
- if (endindex+1 >= retVal.length || retVal.charAt(endindex+1) != "#")
- {
- break;
- }
- endindex = retVal.indexOf("#", endindex+2);
- }
-
- if (beginindex != -1 && endindex != -1)
- {
- retVal = retVal.substring(beginindex,endindex+1);
- }
- }
-
- retVal = dwscripts.trim(retVal);
-
- return retVal;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // inspectDynamicDataRef
- //
- // DESCRIPTION:
- //
- // ARGUMENTS:
- //
- // RETURNS:
- //--------------------------------------------------------------------
-
- function inspectDynamicDataRef(expression)
- {
- var retArray = new Array()
-
- // These RE's are also used in the Translator...maybe we should have one
- //.js file and include it.
-
- var returnRE = /(<cfoutput>\s*#(\w+)__(RETURN_VALUE)#\s*<\/cfoutput>)/gi
- var outParamRE = /(<cfoutput>\s*#(\w+)__(\w+)#\s*<\/cfoutput>)/gi
- var cfQueryRE = /(<cfoutput>\s*#(\w+)\.(\w+)#\s*<\/cfoutput>)/gi
-
-
- //I should use a for loop to go through the RE's
-
- var pos = expression.search(returnRE)
- if (pos == -1)
- {
- pos = expression.search(outParamRE)
- if (pos == -1)
- {
- pos = expression.search(cfQueryRE)
- }
- }
-
- if (pos != -1)
- {
- retArray[0] = RegExp.$2
- retArray[1] = RegExp.$3
- }
- else
- {
- retArray[0] = ""
- retArray[1] = ""
- }
-
- return retArray
- }
-
-
-
-
- ////////////////////////////////////////////////////////////////////////////////
- //These are some helper functions used by SSI infrastructure and not
- //part of the Server API.
- ////////////////////////////////////////////////////////////////////////////////
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // getRecordsetNames
- //
- // DESCRIPTION:
- // Returns a list of all recordset names on the page.
- //
- // ARGUMENTS:
- // dontIncludeStoredProcRS - boolean (optional). 'true' if should not
- // include recordsets returned from stored procedures. defaults to
- // 'false'.
- //
- // RETURNS:
- // array of strings
- //--------------------------------------------------------------------
-
- function getRecordsetNames(dontIncludeStoredProcRS)
- {
- if (!dontIncludeStoredProcRS) dontIncludeStoredProcRS = false;
-
- var nameList = new Array()
- var currentdom = dreamweaver.getDocumentDOM()
-
- var nodes = currentdom.getElementsByTagName("CFQUERY")
-
- for (var i = 0; i < nodes.length; i++)
- {
- var node = nodes[i]
- if (node.getAttribute("NAME") != null)
- {
- nameList.push(node.getAttribute("NAME"))
- }
- }
-
- if (!dontIncludeStoredProcRS)
- {
- // Get list of resultsets returned by stored procs
-
- var nodes = currentdom.getElementsByTagName("CFPROCRESULT")
-
- for (var i = 0; i < nodes.length; i++)
- {
- var node = nodes[i]
- nameList.push(node.getAttribute("NAME"))
- }
- }
-
- return nameList
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // getRepeatedRegionNames
- //
- // DESCRIPTION:
- // Returns a list of all repeated region names on the page.
- //
- // ARGUMENTS:
- // None
- //
- // RETURNS:
- // array of strings
- //--------------------------------------------------------------------
-
- function getRepeatedRegionNames()
- {
- var nameList = new Array();
- var currentdom = dreamweaver.getDocumentDOM();
-
- if (currentdom)
- {
- var nodes = currentdom.getElementsByTagName("MM_REPEATEDREGION");
- for (var index =0 ; index < nodes.length ; index++)
- {
- var node = nodes.item(index);
- if (node)
- {
- nameList.push(node.getAttribute("NAME"));
- }
- }
- }
- return nameList;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // findSourceNode
- //
- // DESCRIPTION:
- // Returns a data source name by name.
- //
- // ARGUMENTS:
- // elementName - string - the name of the data source
- //
- // RETURNS:
- // DOM node pointer
- //--------------------------------------------------------------------
-
- function findSourceNode(elementName)
- {
- var foundnode = null;
- var currentdom = dreamweaver.getDocumentDOM();
-
- if (currentdom)
- {
- var nodes = currentdom.getElementsByTagName("CFQUERY");
- for (var index =0 ; index < nodes.length ; index++)
- {
- var node = nodes.item(index);
- if (node)
- {
- if(node.getAttribute("NAME") == elementName)
- {
- foundnode = node;
- }
- }
- }
-
- if (!foundnode)
- {
- var nodes = currentdom.getElementsByTagName("CFSTOREDPROC")
- for (var i = 0; i < nodes.length; i++)
- {
- var node = nodes[i]
- if(GetSPName(node) == elementName)
- {
- foundnode = node;
- }
- }
- }
-
- if (!foundnode)
- {
- var nodes = currentdom.getElementsByTagName("CFPROCRESULT");
- for (var index =0 ; index < nodes.length ; index++)
- {
- var node = nodes.item(index);
- if (node)
- {
- if(node.getAttribute("NAME") == elementName)
- {
- foundnode = node;
- }
- }
- }
- }
- }
-
- return foundnode;
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // GetSPName
- //
- // DESCRIPTION:
- // Returns the Stored Procedure name from a DOM node
- //
- // ARGUMENTS:
- // node - object - a DOM node pointer
- //
- // RETURNS:
- // string
- //--------------------------------------------------------------------
-
- function GetSPName(node)
- {
- var retVal = "mmerror"
-
- var inner = node.innerHTML
- var re = /<!---\s*mm_procname\s*=\s*"(\w+)"/i; // --> close html comment to fix MSDev color coding
-
- if (inner.search(re) != -1)
- {
- retVal = RegExp.$1
- }
-
- return retVal
- }
-
-
- //--------------------------------------------------------------------
- // FUNCTION:
- // getColumnNames
- //
- // DESCRIPTION:
- // Returns the column names for the given recordset.
- // If rs is not specified the column names for the first recordset
- // are returned.
- //
- // ARGUMENTS:
- // rs - string - optional - the name of a data source
- //
- // RETURNS:
- // array of strings
- //--------------------------------------------------------------------
-
- function getColumnNames(rs)
- {
- var rsDOM, nameList = new Array();
-
- dataSourceNode = findSourceNode(rs);
-
- if (dataSourceNode && dataSourceNode.tagName == "CFQUERY")
- {
- rsDOM = dreamweaver.getDocumentDOM(dreamweaver.getConfigurationPath() + "/DataSources/UD4-ColdFusion/Recordset.htm");
- }
- else if (dataSourceNode && dataSourceNode.tagName == "CFPROCRESULT")
- {
- rsDOM = dreamweaver.getDocumentDOM(dreamweaver.getConfigurationPath() + "/DataSources/UD4-ColdFusion/CFSTOREDPROC.htm");
- }
-
- if (rsDOM)
- {
- nameList = rsDOM.parentWindow.generateDynamicSourceBindings(rs);
- }
-
- return nameList;
- }
-
-
-